import { ImportType, RouterType } from "./../types/router";
import { createRouter, createWebHistory } from "vue-router";
import type { Router } from "vue-router";
// import HomeRouter from './module/home'
// 问题:如果页面较多，每个都需要这路由入口引入,写起来改动的文件多,涉及合并代码冲突
// 万一忘记引入，Vite是否有自动引入或者读取文件的操作
// 查询资料
// Vite 支持使用特殊的 import.meta.glob  和  import.meta.globEager 函数从文件系统导入多个模块
//  glob 方法返回一个函数,函数执行结果为 promise.需要then export default 的返回值
//  globEager  返回hanshu  export default 的返回值
// console.log('我要打印的值:',import.meta);
// 最新的改用glob 不在支持这个api了
// const modulesSync = import.meta.globEager("./module/*.ts", {
//   import: "default",
// });
// 返回一个对象 key为获取到的文件路径,value 为一个动态执行的函数
// 执行函数为一个 promise 的函数,返回值就是文件内部的执行结果
//
const modulesAsync: ImportType = import.meta.glob("./module/*.ts", {
  import: "default",
  eager: true,
});
let routes: RouterType = [];
// 异步导入
console.log("我要打印的值:", "modulesAsync", modulesAsync);
function getRouterAsync() {
  Object.keys(modulesAsync).reduce((lastRouter: RouterType, path: string) => {
    lastRouter.push(...modulesAsync[path]);
    return lastRouter;
  }, routes);
}
// 同步导入
getRouterAsync();
console.log("我要打印的值:", "routes", routes);
const router: Router = createRouter({
  history: createWebHistory(import.meta.env.BASE_URL),
  routes,
});
export const routerList: RouterType = routes;
export default router;
